import re
from pathlib import Path

from settings import *

def is_allowed_file(filename: str) -> bool:
    """
    检查文件扩展名是否被允许
    """
    return Path(filename).suffix.lower() in ALLOWED_EXTENSIONS

def secure_filename(filename: str) -> str:
    """
    清理文件名以防止目录遍历攻击
    """
    # 移除路径部分，只保留文件名
    filename = Path(filename).name
    
    # 移除NULL字节
    filename = filename.replace('\x00', '')
    
    # 只保留安全字符：字母、数字、点、下划线、连字符和空格
    filename = re.sub(r'[^a-zA-Z0-9._\- ]', '', filename)
    
    # 移除首尾空格并限制长度
    filename = filename.strip()[:255]  # 限制文件名长度
    
    # 如果处理后文件名为空，则使用默认名称
    if not filename:
        filename = "unnamed_file"
    
    return filename